"""
GDI Dataclass Package

This package contains custom data classes for handling tables, results, and other data structures
with enhanced functionality for serialization, metadata management, and automatic deserialization.
"""

# Main data classes
from .tables import TableData, TableCollection, TableSeries, FieldMetadata
from .results import SingleResult, UnitResult, ComplexResult, DocData
from .terminologies import Units

# Auto-deserialization utilities
# from .autoDeserializer import (
#     auto_deserialize,
#     auto_deserialize_batch, 
#     get_object_type,
#     is_serialized_custom_object
# )

# Geo-related classes
from .geoProfiles import Profile1D, MultiProfile1D, MaterialTable
from .geoStructures import BasicPile, RecFoundation

# GDIM-related classes  
from .gdimData import GdimTemplate, GdimJsonTable, SimpleJsonTable

# Custom Warning Types for GDI Pipeline
class GDIWarning(UserWarning):
    """Base class for all GDI-related warnings."""
    pass


class GDIDataQualityWarning(GDIWarning):
    """Warning for data quality issues in pipelines."""
    pass


class GDIConfigurationWarning(GDIWarning):
    """Warning for configuration issues or suboptimal settings."""
    pass


class GDIPerformanceWarning(GDIWarning):
    """Warning for performance-related issues."""
    pass


class GDIDeprecationWarning(GDIWarning, DeprecationWarning):
    """Warning for deprecated features in GDI."""
    pass


class GDIResultWarning(GDIWarning):
    """Warning for result quality or reliability issues."""
    pass


# Export all warning types
__all__ = [
    # Main data classes
    'TableData',
    'TableCollection', 
    'TableSeries',
    'FieldMetadata',
    'SingleResult',
    'UnitResult',
    'ComplexResult',
    'DocData',
    'Units',
    
    # Auto-deserialization functions
    # 'auto_deserialize',
    # 'auto_deserialize_batch',
    # 'get_object_type', 
    # 'is_serialized_custom_object',
    
    # Geo classes
    'Profile1D',
    'MultiProfile1D',
    'MaterialTable',
    'BasicPile',
    'RecFoundation',
    
    # GDIM classes
    'GdimTemplate',
    'GdimJsonTable',
    'SimpleJsonTable',

    # Warning types
    'GDIWarning',
    'GDIDataQualityWarning', 
    'GDIConfigurationWarning',
    'GDIPerformanceWarning',
    'GDIDeprecationWarning',
    'GDIResultWarning'
] 